package main

import "fmt"

//结构体版学生管理系统
//有一个物件：
// 1.保存一些数据   ->  结构体字段
// 2.有四个功能     ->  结构体的方法

type student struct {
	id   int64
	name string
}

//造一个学生的管理者
type studentMgr struct {
	allStudent map[int64]student
}

//查看学生
func (s studentMgr) showStudents() {
	//从allStudent 这个map 中把所有学生遍历出来
	for _, v := range s.allStudent {
		fmt.Printf("学号:%d 姓名:%s\n", v.id, v.name)
	}
}

//增加学生
func (s studentMgr) addStudent() {
	//1.根据用户输入的内容创建一个学生
	var (
		stuID   int64
		stuName string
	)
	//获取用户输入
	fmt.Print("请输入学号:")
	fmt.Scanln(&stuID)
	fmt.Print("请输入姓名:")
	fmt.Scanln(&stuName)
	s.allStudent[stuID] = student{id: stuID, name: stuName}
	fmt.Println("添加成功!")
}

//修改学生
func (s studentMgr) editStudent() {
	// 1.获取用户输入的学号
	var stuID int64
	fmt.Print("请输入学号:")
	fmt.Scanln(&stuID)
	// 2.展示该学号对应的学生信息.如果没有,提示没有此学号
	value,ok := s.allStudent[stuID]
	if !ok{
		fmt.Println("没有找到此学号:",stuID)
		return
	}
	fmt.Printf("你要修改的学生信息: 学号%d 姓名%s\n",value.id,value.name)
	// 3.请输入修改后的学生姓名
	fmt.Print("请输入新的学生姓名:")
	var newStudentName string
	fmt.Scanln(&newStudentName)
	// 4.修改学生姓名
	value.name = newStudentName
	s.allStudent[stuID] = value

}

//删除学生
func (s studentMgr) deleteStudent() {

	fmt.Print("请输入要删除的学号:")
	var deleteStudent int64
	fmt.Scanln(&deleteStudent)
	delete(s.allStudent,deleteStudent)
}
